# 1.从键盘输人一个字符串，将小写字母全部转换成大写字母，然后输出到一个磁盘文件test.txt中保存
# str = str.upper(input('请输入字符串'))
# f=open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/test.txt','a+')
# f.write(str+'\n')
#
# 请输入字符串zhangyouze
# test.txt:ZHANGYOUZE
#
# 2.文件data.txt文件中有多行数据，打开文件，读取数据并将其转化为列表。统计读取的数据，计算每一行的总和与平均值，在屏幕上输出结果。
# 文件内容示例如下。
# Chinese: 86, Math:90, English:92, Physical: 78, Program:90 屏幕输出结果示例如下。
# 总和是:436.0,平均值是:87.2
# f = open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/data.txt')
# import csv
# r = csv.reader(f)
# import re
# sum = 0
# p = re.compile('\\D')
# for i in r:
#     l = len(i)
#     for d in i:
#         result = float(p.sub('', d))
#         sum += result
# print('总和是：',sum)
# print('平均值是：',sum/l)
# 总和是： 436.0
# 平均值是： 87.2
#
# 3.创建文件data_3.txt,文件共100行，每行存放一个1~100的整数。
# import random
# result = []
# f = open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/data3.txt','a+')
# for i in random.choices(range(1,101),k=100):
#      result.append(str(i))
#      result.append('\n')
# f.writelines(result)
#
# 4.把一个数字的list 从小到大排序，并写人文件，然后从文件中读取文件内容，进行反向排序，再追加到文件的下一行。
# with open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/data4.txt','a+')as f:
#     number_list = sorted(list(input('输入：')))
#     f.writelines(number_list)
# r = open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/data4.txt')
# number_list1 = reversed(list(r.read()))
# number_list2 = []
# number_list2.append('\n')
# for i in number_list1:
#     number_list2.append(i)
# with open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/data4.txt','a+')as rw:
#     rw.writelines(number_list2)
#
# 输入：18760877208
# file:
# 00126777888
# 88877762100
#
# 5.古代航海人为了方便在航海时辨别方位和观测天象，将散布在天上的星星运用想象力将它们连接起来，有一半是在古代已命名，另一半是近代开始命名的。两千多年前古希腊的天文学家希巴克斯命名十二星座，依次为白羊座、金牛座、双子座、巨蟹座、狮子座、 处女座、天秤座、天蝎座、射手座、摩羯座、水瓶座和双鱼座。给出二维数据存储CSV 文件(SunSign.csv),内容如下。
# 星座，开始月日，结束月日，Unicode 水瓶座，120,218,9810
# 双鱼座，219,320,9811 白羊座，321,419,9800 金牛座，420,520,9801 双子座，521,621,9802 巨蟹座，622,722,9803 狮子座，723,822,9804 处女座，823,922,9805 天秤座，923,1023,9806 天蝎座，1024,1122,9807 射手座，1123,1221,9808 摩羯座，1222,119,9809
# 编写程序，读人CSV 文件中数据，循环获得用户输人，直至用户输入"exit"退出。根据用户输人的星座名称，输出此星座的开始月日、结束月日及对应字符编码。如果输入的星座名称有误，则输出“输人星座名称有误！”。
#
# import  csv
# def SunSign(str):
#     with open('C:/Users/zyz18/OneDrive/cxtc_learn/python/light-edit/SunSign.csv') as f:
#         sig = csv.reader(f)
#         next(sig, None)
#         x = []
#         for i in sig:
#             if i[0]==str:
#                 x = i
#         return x
#
# i=0
# while i<100:
#     str = input('请输入星座：')
#     if str=='exit':
#         print('退出！')
#         break
#     else:
#         c = SunSign(str)
#         if c ==[]:
#             print('输入名称有误！')
#         else:
#             print(c[0],'\n开始日月:',c[1],'\n结束日月:',c[2],'\nUnicode:',c[3])
#
#
# 请输入星座：双月做
# 输入名称有误！
# 请输入星座：双鱼座
# 双鱼座
# 开始日月: 219
# 结束日月: 320
# Unicode: 9811
# 请输入星座：天秤座
# 天秤座
# 开始日月: 923
# 结束日月: 1023
# Unicode: 9806
# 请输入星座：exit
# 退出！
#
# 进程已结束，退出代码为 0
#
# 将数组对应位置值进行计算
# a = [1,2,3,4]
# b = [4,3,2,1]
# c = [1,2,3,4]
# print(list(map(lambda i,j,k:i+j+k, a,b,c)))
# print([i+j+k for i,j,k in zip(a,b,c)])
# [6, 7, 8, 9]
# [6, 7, 8, 9]
#
#
# 列表lst是包含若干整数的列表，计算每个整数的位数。
# lst =[12,456,789.9,23456,79]
# lens = [len(str(i)) for i in lst]
# 注意：要把i转换为str才能求长度
# print(lens)
#
#
# 用一行代码求1+2+3…+10的和。
# print(sum([i for i in range(11)]))
# 55
#
# x是一个整型变量，用一行代码将这个整数的每一位进行分离，分离后的结果保存到列表中
# x=9497432
# print(list(map(int,str(x))))
# print(list(str(x)))
# # 注意：转整型转为字符串
# [9, 4, 9, 7, 4, 3, 2]
# ['9', '4', '9', '7', '4', '3', '2']
#
# 已知lst是一个包含50个分数的列表，现要统计不及格的分数个数。不使用列表推导式，一行代码实现是
# import random
#
# lst = random.choices(range(1, 101), k=50)
# nopass1 = len([i for i in lst if i<60])
# print(nopass1)
# nopass2 = len(list(filter(lambda i : i<60,lst)))
# print(nopass2)
#  注意：filter返回的是一个可迭代对象，数组需要使用list转换一下。
# 31
# 31
#
# 使用一行代码生成10个范围在0,100]之间的随机数
# import random
# print(random.choices(range(1,101),k=10))
# print([random.randint(1,101) for i in range(10)])
# 注意：choices是选择10个，返回列表；  randint是生成一个，返回该数字，不在列表里；所以要加[]
# [27, 35, 22, 80, 93, 1, 5, 94, 47, 39]
# [62, 77, 70, 67, 20, 13, 46, 9, 51, 1]
#
# s是一个包含若干整数的列表，输出一个一个新列表，列表中奇数在后，偶数在前，并且奇数之间的相对顺序不变，偶数之间的相对顺序也不变。
# import random
# s = random.choices(range(1,101),k=20)
# print([i for i in s if i%2==0]+list(filter(lambda x :x%2==1,s)))
# [28, 8, 52, 66, 58, 46, 94, 60, 82, 74, 74, 99, 45, 65, 5, 45, 73, 23, 89, 33]
# 使用列表推导式方法和filter方法将偶数、奇数分离出来再合并；其中，列表推导式返回单个数元素，放到列表里；filter返回可迭代对象，用list转换为列表；